Scheduling delivery of products via the internet

ABSTRACT

Methods and apparatus for scheduling delivery of an order via a wide area network. A delivery interface is generated in which a plurality of delivery windows are presented. The delivery interface is transmitted to a remote platform via the wide area network. In response to selection of a first one of the plurality of delivery windows, it is determined whether the order may be delivered in the first delivery window. Where it is determined that the order may be delivered in the first delivery window, delivery of the order is scheduled in the first delivery window.

RELATED APPLICATION DATA

This application is a continuation of U.S. patent application Ser. No.09/568,613, filed May 10, 2000, entitled SCHEDULING DELIVERY OF PRODUCTSVIA THE INTERNET, which is incorporated herein by reference for allpurposes, which claims priority from U.S. Provisional Patent ApplicationNo. 60/133,646, filed May 11, 1999, entitled ELECTRONIC COMMERCE ENABLEDDELIVERY SYSTEM AND METHOD, the entirety of which is incorporated hereinby reference for all purposes. This application also relates to a numberof commonly assigned, copending U.S. patent applications filedsimultaneously herewith including U.S. patent application Ser. No.09/568,603, now U.S. Pat. No. 7,177,825 entitled INTEGRATED SYSTEM FORORDERING, FULFILLMENT, AND DELIVERY OF CONSUMER PRODUCTS USING A DATANETWORK (Attorney docket no. WVANP001), U.S. patent application Ser. No.09/568,570, now U.S. Pat. No. 7,370,005, entitled INVENTORY REPLICATIONBASED UPON ORDER FULFILLMENT RATES (Attorney docket no. WVANP002), U.S.patent application Ser. No. 09/568,614, entitled REAL-TIME DISPLAY OFAVAILABLE PRODUCTS OVER THE INTERNET (Attorney docket no. WVANP003),U.S. patent application Ser. No. 09/568,572, now U.S. Pat. No. 6,975,937entitled TECHNIQUE FOR PROCESSING CUSTOMER SERVICE TRANSACTIONS ATCUSTOMER SITE USING MOBILE COMPUTING DEVICE (Attorney docket no.WVANP005), U.S. patent application Ser. No. 09/568,823, now U.S. Pat.No. 7,197,547 entitled LOAD BALANCING TECHNIQUE IMPLEMENTED IN A DATANETWORK DEVICE UTILIZING A DATA CACHE (Attorney docket no. WVANP006),U.S. patent application Ser. No. 09/568,569, now U.S. Pat. No.6,622,127, entitled ORDER ALLOCATION TO SELECT FROM INVENTORY LOCATIONSSTOCKING FEW UNITS OF INVENTORY (Attorney docket no. WVANP007), U.S.patent application Ser. No. 09/566,912, now U.S. Pat. No. 6,332,334,entitled METHOD AND APPARATUS FOR HANDLING AND TRANSPORTINGTEMPERATURE-SENSITIVE ITEMS (Attorney docket no. WVANP008), and U.S.patent application Ser. No. 09/568,571, now U.S. Pat. No. 7,139,637,entitled ORDER ALLOCATION TO MINIMIZE CONTAINER STOPS IN A DISTRIBUTIONCENTER (Attorney docket no. WVANP009). Each of the disclosures of thesecopending applications is incorporated herein by reference in itsentirety for all purposes.

BACKGROUND OF THE INVENTION

The present invention relates to the field of electronic commerce. Inparticular, the invention relates to a technique for selling anddelivering consumer products to customers using a data network. Stillmore specifically, the present invention provides methods and apparatusby which scheduling of deliveries for products ordered through thepresent system is provided via the Internet.

Electronic commerce via the Internet is rapidly changing the way inwhich products and services are purchased by and delivered to consumers.An important challenge faced by most businesses engaging in commerceover the Internet relates to the manner in which their products actuallyget to consumers.

Most Internet retailers rely on third party services such as UPS andFederal Express to deliver the products purchased on their sites. Thismodel has some advantages for the retailers in that they don't have toinvest in and develop delivery infrastructures. However, the downside isthe potential negative effects such a model has on customersatisfaction. That is, once an order is picked up from the retailer bythe delivery service, the retailer loses control of the remainder of thetransaction and runs the risk that any mistakes by the delivery servicewill reflect negatively on the retailer. For example, the retailer lacksthe ability to deliver products during precise delivery windows. Ratherthey must rely on the delivery service which may make the customer waitaround for inconveniently long periods of time.

In addition, if the customer's order is damaged or incorrect, there isno immediate recourse for the customer because the delivery service isnot controlled by the retailer. The customer must typically go through arather cumbersome process to return the order using the same or someother third party delivery service. This can intensify any feelings offrustration the customer might have with regard to the error. Obviouslythis is undesirable from the retailer's perspective.

In view of the foregoing, there is a need for techniques which allowe-commerce retailers to efficiently develop effective deliverycapabilities. More specifically, there is a need for techniques by whichsuch retailers may effect precise delivery of their products tocustomers.

SUMMARY OF THE INVENTION

According to the present invention, methods and apparatus are providedby which the delivery of products ordered over the Internet may bescheduled in an effective and precise manner. The techniques describedherein allow an e-commerce retailer to communicate precise availabledelivery windows to a customer over the Internet which reflect anaccurate picture of the product and delivery resources which areactually available at the time the customer schedules the delivery. Thatis, when a customer indicates that scheduling of a delivery is desired,the system of the present invention computes and displays the availabledelivery windows to the customer which, according to a specificembodiment, are half-hour windows. The techniques of the presentinvention are then able to schedule the delivery window selected by thecustomer without compromising any previous commitments made to othercustomers. This is accomplished by generating the delivery window gridand scheduling the selected window with reference to available resourcecapacity which is reflective of the previous commitments.

Thus, the present invention provides methods and apparatus forscheduling delivery of an order via a wide area network. A deliveryinterface is generated in which a plurality of delivery windows arepresented. The delivery interface is transmitted to a remote platformvia the wide area network. In response to selection of a first one ofthe plurality of delivery windows, it is determined whether the ordermay be delivered in the first delivery window. Where it is determinedthat the order may be delivered in the first delivery window, deliveryof the order is scheduled in the first delivery window.

According to another specific embodiment of the invention, methods andapparatus are described for generating a delivery interface in which aplurality of delivery windows are presented on a remote platform via awide area network. According to the invention, which of the plurality ofdelivery windows are available for delivery of an order is determinedwith reference to currently available delivery resources and at leastone of a plurality of previously scheduled delivery stops.

According to another embodiment, methods and apparatus are described forgenerating a schedule interface in which a plurality of schedule windowsare presented on a remote platform via a wide area network. According tothe invention, which of the plurality of schedule windows are availablefor scheduling an appointment is determined with reference to currentlyavailable appointment resources and at least one of a plurality ofpreviously scheduled appointments.

A further understanding of the nature and advantages of the presentinvention may be realized by reference to the remaining portions of thespecification and the drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an integrated system architecture inaccordance with a specific embodiment of the present invention.

FIG. 2 is a diagram illustrating a “hub and spoke” distribution systemaccording to a specific embodiment of the present invention.

FIG. 3 is a flow diagram which illustrates the interactions betweensoftware modules which effect the delivery scheduling process accordingto a specific embodiment of the present invention.

FIG. 4 is a flowchart illustrating the delivery scheduling processaccording to a specific embodiment of the invention.

FIG. 5 is a flowchart illustrating generation of the delivery windowgrid according to a specific embodiment of the present invention.

DETAILED DESCRIPTION OF SPECIFIC EMBODIMENTS

FIG. 1 shows a schematic block diagram illustrating various systems,subsystems and/or components of an integrated system architecture 100for use with a specific embodiment of the present invention. The systemof FIG. 1 as well as other systems which may be used in conjunction withthe present invention are described in greater detail in copending U.S.patent application Ser. No. 09/568,603, now U.S. Pat. No. 7,177,825entitled INTEGRATED SYSTEM FOR ORDERING, FULFILLMENT, AND DELIVERY OFCONSUMER PRODUCTS USING A DATA NETWORK (Attorney docket no. WVANP001)incorporated by reference above. As shown in FIG. 1, system 100 includesa plurality of subsystems and other components for effecting electroniccommerce over a data network. It will be understood that portions of thevarious subsystems described herein are embodied in computer programinstructions stored in corresponding computer-readable media. A briefdescription of at least a portion of the plurality of subsystems ofsystem 100 is presented below. System 100 of FIG. 1 includes:

(1) a Publishing (PUB) Subsystem 140 which manages SKU and cataloginformation (e.g. SKUs, UPCs, products, categories, descriptiveattributes, etc.), and provides an interface to merchants 133;

(2) a Webstore Subsystem (WS) 132 which manages the on-line storeinterface with customers, including customer shopping and orderingtransactions;

(3) a Transportation Subsystem (XPS) 124 which manages delivery windowscheduling, delivery vehicle routing, capacity planning, and mobilefield device (MFD) data used by delivery couriers;

(4) an Order Management Subsystem (OMS) 150 which manages pricing data,item availability data, inventory data, vendor data, finance,procurement, etc;

(5) an Order Fulfillment Subsystem (OFS) 160 which facilitates thefulfillment of customer orders and manages the distribution center (170)operations; and

(6) a Customer Relationship Management (CRM) Subsystem 126 for enablingcustomer service representatives (CSRs) 143 to service customer requestsand track customer interaction.

According to specific embodiments, each subsystem may also comprise atleast one server and/or other components. Further, each subsystem may beconfigured to utilize a dedicated or shared database server as itspersistent and transactional data backbone. Users or customers mayaccess data stored on one of the subsystem's database servers (e.g.Webstore database), which then executes appropriate business logicand/or business objects.

Each subsystem may be configured or designed to communicate with eachother via a plurality of interfaces. According to a specific embodiment,the plurality of interfaces includes both synchronous and asynchronousinterfaces. Many of the various system interfaces are configured to beasynchronous, wherein data is typically transferred in batch mode viastaging (e.g. database) tables or flat files (e.g., separated valuefiles). However, at least a portion of the system interfaces areconfigured as synchronous interfaces. Generally, a synchronous interfacemay be used where an immediate response from a server or component isrequired.

Conceptually, system 100 of FIG. 1 may be grouped into two generalsubsystems, namely a Front Office system and a Back Office system. TheFront Office system is generally responsible for functions related tocustomer transactions such as, for example, customer orders, billingtransactions, delivery scheduling, customer service, etc. In theembodiment of FIG. 1, for example, the Front Office system 130 comprisesthe Webstore Subsystem 132, Transportation Subsystem 124, and CustomerRelationship Management Subsystem 126. The Front Office system 130 mayalso include other subsystems or components such as, for example, mobilefield device (MFD) components 112, a tax component 114, a billingcomponent 116, a delivery route planning component 118, a search engine120, a catalog component 112, a Help Desk component 114, a customercapacity allocation component 128, etc.

Additionally, the Front Office system 130 may include a centralizeddatabase 131 which may be accessed by subsystems and/or components ofsystem 100. Alternatively, one or more of the Front Office systemsand/or components may each comprise a respective database which isaccessible by other subsystems and/or components of system 100. [00028]The Back Office system generally includes all subsystems and/orcomponents which are not part of the Front Office system. Thus, as shownin FIG. 1, for example, the Back Office system includes the PUB 140, OMS150, and OFS 160 subsystems. However, the invention is not limited tothe particular embodiment shown in FIG. 1, and it will be appreciatedthat the specific configuration of system 100 may be modified by onehaving ordinary skill in the art to suit specific applications.

As shown in FIG. 1, the Front Office 130 comprises a plurality ofseparate subsystems such as, for example, Webstore Subsystem (WS) 132,Transportation Subsystem (XPS) 124, and Customer Relationship Management(CRM) Subsystem 126. Each subsystem may be implemented via a combinationof hardware and/or software, and further may include a plurality ofdifferent functional components, modules, and/or plug-in applications.

At least a portion of the software residing at the Front Office systemmay include a presentation layer, an application layer, a businessobject layer, a database access layer, or any combination thereof.According to a specific embodiment, the presentation layer handles theactual presentation of information to users via an appropriate medium.The application layer handles the appropriate application logic for thevarious subsystems of the Front Office. For example, in the WebstoreSubsystem 132, it is the application layer (referred to as the shoppingengine) which determines that a customer cannot check out an orderunless the customer has selected a delivery window, or provided billinginformation. The business object layer (referred to as the Bobo—Bucketof business objects) provides objects with a fixed set of functionality(e.g. methods or procedures) that may be manipulated by the applicationlayer. According to a specific embodiment, the business objects do notknow about each other, and the application layer handles thecoordination between the various business objects. The database accesslayer provides connectivity and data access APIs to the Front Officedatabase 131 (also referred to as the Webstore database). According to aspecific embodiment, the database access layer performs pooling andcaching of connection objects, where appropriate.

It is also important for a common database schema to be adopted by eachof the Front Office systems. According to a specific embodiment, thedatabase 131 is implemented as a shared database which may be accessedby each of the Front Office systems.

The Webstore Subsystem (WS) 132 provides an interface for enablingcustomers to access the on-line store (e.g. Webstore). In a specificembodiment where the Webstore is implemented as a website on the WorldWide Web, customers may access the Webstore via the Internet or WorldWide Web using any one of a plurality of conventional browsers. TheWebstore user interface may be designed to provide a rich set offunctions without requiring any special browser plug-ins. Thus,according to a specific embodiment, customers may access the Webstoreusing any client machine, regardless of the machine's operating systemplatform. Additionally, for security purposes, the Webstore interfacealso supports data encryption for exchange of any sensitive or privateinformation between the customers and the website. According to aspecific embodiment, the Webstore interface is implemented using asecure http protocol (HTTPS), commonly known to those skilled in theart.

In accordance with a specific embodiment, the Webstore Subsystem 132supports a number of customer related features such as, for example,self registration; accessing of customer account information; browsingof product categories and category hierarchy; viewing of product imagesand product information; key word searches; delivery scheduling;accessing of customer order history; customizable shopping lists;on-line shopping and ordering; etc.

The Webstore Subsystem (referred to as the Webstore) may be implementedusing at least one server which is connected to the data network.According to a specific embodiment, the Webstore is implemented using aplurality of web servers (e.g. web server farm) which helps to minimizeserver response time and provide real-time failover and redundancycapabilities. Further, according to a specific embodiment, in order tokeep the web server response time to a minimum, the Webstore may beconfigured such that all processing is performed on a single server,within one process. Where a plurality of Webstore servers are used,redundant processing may be performed by at least a portion of theservers so that a single Webstore server may handle all Webstoreprocessing tasks associated with a particular on-line customer. It willbe appreciated that the Webstore server boundaries may be crossed whereappropriate, such as, for example, when accessing the Front Officedatabase via the data network.

According to a specific implementation, the presentation layer of the WSsoftware is implemented in ASP, which generates HTML data that is sentback to the customer browser. The application software layer or shoppingengine layer may be implemented as COM objects. The business objectlayer of the software may provide the following business objects: (1) acustomer object which implements customer functionality and attributes;(2) a catalog object which implements the product category hierarchy,SKUs, price, and available-to-promise (ATP) information; (3) an orderobject which implements the shopping cart, order management, billing,and check-out procedures; (4) a session object which implements stateover HTTP; and (5) a delivery object which implements customer deliveryscheduling. Further, the WS is preferably configured or designed tominimize customer response time and to provide for scalability.

Additionally, as shown in FIG. 1, the Front Office system may include anumber of integrated components which provide additional functionality.For example, the WS may include a plurality of components which provideadditional functionality such as, for example, computation of taxes,search capability, credit card billing, etc. Thus, as shown in FIG. 1,for example, the WS 132 includes at least one catalog component 122; atax computation component 114 for computing taxes for each order lineitem that is sold; a search component 120 for processing text searchrequests; and a credit (or debit) card server (CC) component 116 forhandling credit and/or debit card authorizations and funds captures.According to at least one embodiment, one or more of these componentsmay be implemented as an asynchronous process in order to reduce orminimize impact on the Webstore server's response time and availability.

The Transportation Subsystem (XPS) 124 generally handles delivery windowscheduling, delivery vehicle routing, capacity planning, and mobilefield device programming used by delivery couriers. Accordingly, theTransportation Subsystem may be configured to provide the followingfunctional features: (1) delivery grid computation and presentation; (2)delivery scheduling, and delivery window reservation; (3) deliveries tocustomer sites with appropriate billing actions and processing,including processing of adjustments, credits, and returns; (4) adjustingdelivery operation parameters such as, for example, truck route plans,delivery vehicle usage, service duration, parking time, delivery courierscheduling, data to be downloaded into MFDs, etc.; (5) changing orderstate based on cutoff time; and (6) capacity management.

As shown in FIG. 1, for example, the Transportation Subsystem 124 maycomprise a plurality of components and/or other subsystems including,Route Planner 118, MFD server 112, mobile field devices 106,transportation resource management (TRM) software 108, couriers 110, andcustomer capacity allocator 128. In alternate embodiments, at least aportion of these components such as, for example, the MFD server 112,may be implemented as a separate subsystem and may reside external tothe Transportation Subsystem.

Route Planner 118 provides an interface to access the transportationresource management (TRM) software 108. According to a specificembodiment, the TRM component may keep track of the current state of alldelivery windows which may be organized according to a per-zone basis.Delivery vehicles may be assigned to zones as part of the deliveryplanning. The Route Planner 118, working in conjunction with TRM 108,allocates specific routes and stops to specific delivery vehicles.Preferably, a stop will be scheduled for a particular customer withinthat customer's selected delivery time window. When a customer selects adelivery window, the delivery window business object submits the requestto the Transportation Subsystem's Route Planner 118. The Route Plannerthen performs a verification check to verify that the selected deliverywindow can be promised to the customer.

Although the MFD server 112 may conceptually be grouped with theTransportation Subsystem, in a specific embodiment, the MFD servercomponent 112 may configured to include at least one back-end serverwhich resides in a particular area data center. Thus, different areasmay be serviced by different MFD servers. The same may be said for RoutePlanner 118. Moreover, each zone in a particular area may serviced froma station which may be connected to the area data center via the datanetwork. Each mobile field device (MFD) unit or client 106 may connectto an area MFD server 112 via the data network, and download and/orupload various types of information, including, for example, customerorder history information, delivery information (e.g. vehicle deliveryroutes, stops, etc.), customer returns information, credits,adjustments, etc.

The Customer Relationship Management Subsystem 126 is an interactiveapplication which may be used by customer service representatives (CSRs)143 to manage customer service requests and to track customerinteraction. The functionality provided by the CRM subsystem mayinclude, for example, accessing customer information; issuing creditsfor various customer issues (e.g. complaints, returns, damaged goods,etc.); handling work flow for processing customer issues; etc. The CRMsubsystem provides CSRs (sometimes referred to as customer serviceoperators—CSOs) with the ability to access, view, and edit customerinformation in accordance with customer requests.

The Order Fulfillment Subsystem 160 manages all functionality of thedistribution center (DC) 170. In the embodiment of FIG. 1, the OFSincludes appropriate hardware and/or software for managing the DCfacility 170, including, for example, a warehouse management system(e.g. software application), at least one database 161, at least oneinterface 162, and an automated material handling (AMH) controllercomponent 163, which manages the conveyor, carousel, and scannercomponents. In a specific implementation, the Order FulfillmentSubsystem 160 may be implemented using a warehouse management systemsuch as, for example, the MOVE warehouse management system provided byOptum, Inc. of Costa Mesa, Calif. The warehouse system also provides theinterface with the Order Management Subsystem. In a specific embodiment,this interface is implemented using a business host interface (BHI). Thewarehouse management subsystem may also provide the interface forallowing the OMS subsystem to communicate with the OFS database 161.

The Order Management Subsystem (OMS) 150 manages a variety of aspectsrelated to the integrated system architecture of the present invention,including, for example, pricing, availability, inventory, vendors,financials, procurement, and data flows between various subsystems. OMSincludes an inventory component which is responsible for maintaininginventory records, determining inventory availability, and replenishmentof inventory stock. OMS subsystem 150 includes graphical user interface152, and at least one database 151 for storing various data receivedfrom at least a portion of the other subsystems.

The Order Management Subsystem may be configured to support bothasynchronous and synchronous interfaces with the other subsystems. In aspecific embodiment, the OMS is configured to support an asynchronousinterface with each of the other subsystems. This configuration providesa number of advantages described in greater detail below. Additionally,each OMS interface is configurable, and may be configured to support therunning of batch processes as often as is desirable.

According to a specific implementation, all PUB-OMS and WS-OMS interfaceprograms are configured to operate at the database schema level. New andupdated data may be posted to a persistent message queue (e.g. stagingtables) within the data source database. From there, the data may beprocessed into the destination database.

Implementation of the various interfaces between OMS and the othersubsystems may be accomplished using a variety of different techniquescommonly known to one having ordinary skill in the art. The followingdescription provides an example of at least one such technique which maybe used for interfacing OMS with the other subsystems. However, it willbe appreciated that the specific interfaces described below may beimplemented using other techniques commonly known to those skilled inthe art.

The interface between the OMS and the Webstore Subsystem may beimplemented, for example, using a plurality of executable programs. Afirst portion of the executable programs may be responsible for movingdata from the Webstore to the OMS. This data may include, for example,new/updated customer data, new/updated order data, order cutoffinformation, order billing information, customer return information,customer credits and fees (e.g. bill adjustment data), etc. A secondportion of the executable programs is responsible for moving data fromthe OMS to the Webstore Subsystem. This data may include, for example,inventory data, availability data, pricing data, and information aboutshipped customer orders.

FIG. 2 illustrates the “hub and spoke” nature of a product distributionsystem designed according to a specific embodiment of the invention.Trucks 202 leave Distribution Center (DC) 170 to deliver customer ordersto a plurality of stations 204 each of which is associated with a zone206. Each zone 206 may be divided into a plurality of subzones 208 eachof which may contain a plurality of customer stops 210. A plurality ofvans 212 is associated with each station 204 for delivery the customerorders to the appropriate customer stops 210. The orders (comprising oneor more totes) on trucks 202 are transferred to vans 212 at stations 204which then execute an assigned van route according to the deliveryschedule generated as described below.

A specific embodiment of a delivery scheduling process will now bedescribed with reference to FIGS. 3 through 5. When the customer selects“Schedule Delivery” in the Webstore interface (402) XpBobo in WSsubsystem 132 generates and presents a delivery window grid to thecustomer (404), generation of which will be described in greater detailbelow with reference to FIG. 5. When the customer selects one of theavailable delivery windows (406), XpBobo sends the new van stop and theset of routes to the Route Planner 118 for scheduling of the new vanstop on any of the routes (408). According to a specific embodiment,this is done by computing the actual distance between stops usingdriving speeds and a variety of other parameters including, for example,whether or not the selected delivery window is during rush hour.According to a specific embodiment, the scheduling of the new stop on aroute already having scheduled stops is favored. This is achieved byusing a cost model which penalizes adding the stop to a new route butwhich doesn't add any cost for adding the first several, e.g., 6, stopsto the new route. According to a specific embodiment, the Route Plannermodule employs third party software (i.e., TRM 108) called SOC providedby Descartes of Toronto, Ontario, Canada.

If Route Planner 118 cannot place the new stop on any of the routes(410), it may attempt to do so through a process referred to herein as“shoehorning” as long as shoehorning hasn't already been attempted (412and 414). That is, according to a specific embodiment, XpBobo reducesthe service duration (described below) originally set for the new stopand calls the Route Planner to try again with the new value. Accordingto various embodiments, this shoehorning procedure may be repeated someset number of times. If the stop still can't be fit in (410) and no moreshoehorning is desired (412), then a message is presented to the userindicating that the selected delivery window is unavailable (416). If,on the other hand, the new stop does fit into an existing route (410),it is inserted into the route (418).

According to a specific embodiment, when the delivery window grid isgenerated, XpBobo makes the assumption that the customer's order willcorrespond to some number of totes. According to a more specificembodiment, the number is the same for all customers and corresponds to,for example, the average order size in the system, e.g., three.According to an alternate embodiment, the number of totes assumed isbased on the particular customer's past order history, e.g., if thecustomer averages 12 totes per order, the delivery window grid isgenerated based on that assumption.

Referring back to FIG. 4, the number of totes is estimated and updatedat checkout (420) based on the items in the customer's cart andinformation in the catalog about the volume of those items. This isnecessary because in scheduling delivery, the customer is reserving anumber of different types of capacity, e.g., van capacity, serviceduration (i.e., the amount of time allotted for bringing the totes intothe customer's home may change with the number of totes), etc. Thus, atcheckout, XpBobo again contacts the Route Planner with the updatednumber of totes for the purpose of updating the schedule. Any excesscapacity recovered as a result of this updating is then returned to thesystem.

It is possible that when the Route Planner recomputes the schedule thatthe actual size of the order pushes one or more subsequent stops out oftheir delivery windows in which case the Route Planner rejects theorder. That is, if the customer's stop no longer fits into an existingroute (422), XpBobo may adjust some parameters associated with the stop(424), e.g., the number of totes or the service duration, and resendsthe request to the Route Planner until the order is accepted.

According to another embodiment, even where the customer's stop does notfit into an existing route, it is nevertheless scheduled in the selectedwindow. The window violations are then either taken care of later, e.g.,during a nightly optimization, or handled on a case-by-case basis by theoperations staff.

Each night, another client of Route Planner 118 specifies groups of jobsto be optimized together. This typically opens up additional slack time,i.e., time periods in existing routes, in which additional stops may bescheduled the next day.

An additional optimization occurs at cutoff time, i.e., the time atwhich the orders on a set of van routes are sent to the OFS forfulfillment, by Cutoff Route Planner 302. This provides some fine tuningof the routes as well as takes care of last minute cancellations bycustomers. According to a specific embodiment, where there are multipledeliveries to a single address, this additional optimization maycollapse them into a single delivery.

Each service area, e.g., the San Francisco Bay Area or Atlanta, isdivided into zones corresponding to a particular station, each of whichmay be further divided into subzones. Each of the zones and subzoneshave tables associated therewith which have a plurality of parametersincluding open hours, service duration, parking time, etc. For example,for a particular subzone 6 minutes might be allocated for parkinginstead of 2 minutes for a different subzone. Further detail regardingthese parameters will be discussed below.

According to a more specific embodiment, there is an additional layer oflookup logic in which an address or address range is associated with aspecific latitude/longitude pair and subzone without using the geocodermodule and the polygon interior test. Instead, a direct lookup in adatabase table is performed. This allows the capability to correctgeocoding errors, assign specific addresses to special subzones, and todeny service to addresses that are otherwise in a valid service areawithout having to edit the subzone boundary polygons.

When a customer registers with Webvan, a geocoder module provided byDescartes takes the delivery address and determines a latitude andlongitude pair which Xpbobo then uses to perform a polygon-interior testto determine if the delivery address is in any of its delivery subzones.Each subzone may include multiple polygons. If the address is not in oneof the delivery subzones, the registration module indicates to the userthat the user's area is not currently being serviced. According to aspecific embodiment, the registration module recognizes when thedelivery address is associated with another metropolitan area servicedby Webvan (e.g., by looking at the zip code) and provides theappropriate URL to the user.

If the specified delivery address is within an existing subzone, theaddress is associated with the appropriate zone and subzone and thecorresponding table values. When a customer schedules a delivery, theset of routes and the open hours used in the various transactionsincluding the delivery window grid generation are based upon the tablevalues for the zone and subzone corresponding to the customer's address.The values for a particular zone are inherited by its subzones but maybe overridden. The open hours for a particular subzone would, forexample, override the open hours for the enclosing zone if different.Thus, a particular downtown area may be closed for deliveries duringrush hour while adjacent, less congested areas remain open.

There are five values of interest to the delivery scheduling processwhich may be specified on the zone, subzone, or customer address level.Parking time, base service duration, per tote service duration, stepthreshold, and step duration. The beginning of the service duration fora particular delivery stop must fall within the promised window whilethe parking time does not need to. That is, the driver may park the vanbefore the delivery window, but may not ring the customer's doorbelluntil the delivery window begins.

According to a specific embodiment, parking time is a fixed value foreach subzone (or even for a particular customer) which may evolve overtime based on feedback from drivers. The base service duration is thebasic amount of time it takes to execute a delivery which may bespecified at the zone, subzone, and customer address levels. The pertote service duration is a number of seconds added to the base serviceduration for each tote in the order.

Step threshold and step duration attempt to capture the fact thatcertain orders may require multiple trips between the van and thedelivery location to unload all of the totes. Step threshold identifieshow many totes the driver can carry at once which may be set to takeinformation about the specific customer residence into account, e.g.,the driver can only carry one tote because of access difficulties. Thestep duration is the amount of time to add to the base service durationfor each step threshold reached by the current order. That is, if thestep threshold is 3 and there are 8 totes, 2 step durations are added tothe base service duration. Thus, the total service duration=base serviceduration+n per tote service durations+m step durations, where n is thenumber of totes in the order and m is the number of step thresholdsexceeded.

In the WS database there are two tables which relate to deliveryscheduling. The first table is the Van Routes Table which contains allof the available van routes with their constraints. These are createdempty by XP services component 124 called the Zone Window Creator (ZWC)which runs once a day, e.g., at night, and posts the van routes data tothe WS database. Each entry in this table corresponds to a window oftime during which a delivery resource, e.g., a van, will be deployedfrom a particular station to service stops. These zone delivery windowsare also created with reference to the delivery hours in effect for thatzone.

The second table is the Van Stops Table each entry of which correspondsto a customer order which needs to be serviced. Most van stops have apointer which points to a van route in the Van Route Table and includesthe estimated time of arrival and departure if the stop can be serviced.That is, van stops may be created and stored in this table even where itturns out they can't be serviced. In such instances, these entries donot have pointers to particular van routes.

The ZWC creates van routes for the Van Routes Table with reference totruck route plans each of which identifies when a truck is scheduled toleave the Distribution Center and when it is scheduled to arrive at aparticular station. According to a specific embodiment, systemconstraints dictate that when a truck reaches a station there must be aset of vans either at the station or about to return to the station.Each route corresponds to the time period when a particular van is outservicing stops. When the same van returns to the station and thenleaves again, it corresponds to a different route.

The ZWC also refers to the “open hours” for each area and zone, thenumber of vans available in each zone, and a parameter called “staggerduration” which reflects the fact that vans will arrive back at thestation at staggered intervals relative to a particular truck arrivalfrom the DC to ensure that all of the delivery windows are covered by atleast one van. Using all of this information, the ZWC generates the vanroutes each of which indicates when a particular van is scheduled toleave the station to service stops and when it is expected to return.If, for example, three truck arrivals are scheduled for a particularstation on a given day, there are three routes created by the ZWC foreach van at that station.

According to an alternative embodiment, the van return times are notnecessarily constrained by truck arrivals at the station. For example,if a van has enough capacity to stay out longer than the time betweentruck arrivals at the station, then that van is allowed to stay outservicing stops despite the scheduled arrival of a truck at the station.According to this embodiment, vans are only brought back to the stationwhen they are empty.

The generation of the delivery window grid referred to in FIG. 4 willnow be described with reference to FIG. 5. In response to a userselecting “Schedule Delivery” in the Webstore interface, the deliverygrid estimator portion of XpBobo, generates the delivery window gridwith reference to the Van Routes, Van Stops tables, and the currentcustomer's latitude and longitude. According to a specific embodiment,the delivery window grid represents seven days, each having 20-25half-hour windows (depending upon the open hours for the particularzone). The grid represents 7 times 4 sets of 3-6 routes. That is, 7 daystimes 4 truck waves from the DC per day times 3-6 van routes per wave.

For each existing van route in the user's service zone, the processcomputes the “slack time” between each pair of existing stops on theroute to determine whether there is sufficient time to deliver astandard load to the user's address. If there are no stops on the route,i.e., the route is still empty, the slack time for that route is theentire duration of the route. The process also determines whether thereis enough free capacity on the van to accommodate the customer's order.According to a specific embodiment, if there is not sufficient vancapacity, XpBobo determines whether a “recharge” trip to the station ispossible between two stops.

Referring now to FIG. 5, initially, all of the delivery windows of thedelivery window grid are designated as unavailable (502). XpBobo thengets the first route for the customer's zone (504) and if there are anystops on the route (506) XpBobo gets the first stop (508) and computesthe slack time between the beginning of the route and the first stop(510). If the slack time is sufficient to accommodate insertion of thenew stop without jeopardizing existing commitments to previouslyscheduled customers (512), the corresponding window in the grid ischanged to indicate that the window is available (514). According to oneembodiment, an graphical element associated with the window is presentedas green rather than red to indicate its availability.

If, on the other hand, the slack time is not sufficient for insertion ofthe new stop (512), XpBobo determines whether the end of the currentroute has been reached (516). If not, XpBobo gets the next pair of stops(518), e.g., the first and second stops, and computes the slack timebetween the pair of stops (510). This continues until the end of theroute is reached (516) at which point, XpBobo determines whether thereare any additional routes for the customer's zone (520). If so, XpBobogets the next route (522) and repeats the process described above. Wherea route does not yet have any stops assigned to it (506), all of thewindows in the grid corresponding to the duration of the route arechanged to available (524). If no routes remain (520) the deliverywindow grid is displayed to the customer (526) and the process ends.

According to a specific embodiment, XpBobo uses two kinds ofcomputations—a “forward” computation by which it computes the “earliestarrival time” at the customer's location, and a “backward” computationby which it computes the “latest arrival time” at that location.

The slack time between existing stops on a route is determined usinginformation from the Van Stops table for the existing stops. Each stophas an associated promised delivery window and a plurality of time-basedparameters the aggregation of which represents the time allotted for thestop. These parameters include drive time to the stop relative to theprevious stop (or the station for the first and last stops), parkingtime, and service time.

When there is any slack between stops on a particular route, a drivingtime estimate is done to determine if there is sufficient time to inserta new stop for the user's address. According to a specific embodiment,this is done without using the absolute real time information from theRoute Planner. Instead, the estimates are computed using approximationsof driving speed and real-driving distances based on straight-linedistances computed from latitude/longitude values. The delivery gridestimator calculates whether a stop is reachable between any twoexisting stops, or the station and an existing stop, or an existing stopand the station, first by computing a forward driving distance from theprevious stop to compute an earliest-arrival time and then byback-computing from the next stop to compute a latest-arrival time.Using these two times and the amount of slack available, it decideswhether a specific window can be shown open to the user.

If there is enough time between existing stops to drive to the newunassigned stop, park, deliver a “standard” load, and drive to thesecond stop without violating existing promises, e.g., the deliverywindow of the second stop, and if there is sufficient capacity in thevan associated with the route, the associated window is presented to theuser as available, e.g., the window is colored green. If there aremultiple windows between the two existing stops for which this is true,all are colored green. As described above with reference to FIG. 5, thisis done for each pair of existing stops on each route. More generally,if there is enough slack time in any of the van routes associated withthe user's service zone for a given delivery window, that window ispresented as available.

According to a specific embodiment, the delivery grid is adjusted forthe open hours available for each day of the week. In the case ofnon-uniform hours, e.g., 9 am to 5 pm on weekends and 7 am to 10 pm onweekdays, the grid is adjusted so that the display is centered correctlyand unavailable times are clearly marked as such. According to a morespecific embodiment, the entire display computation is done in C++ asopposed to ASP and a precomputed grid is handled over to the ASP layerthat then simply displays it as HTML.

As mentioned above, parking time and service duration parameters may beset at the zone level, the sub-zone level, and even at the customer'saddress level. Thus, the parking time may be set high for a particularsub-zone where parking is scarce, or the service duration for aparticular customer might be set high where, for example, the stop has alot of steps. According to a specific embodiment, there are fixed andvariable portions of the service duration parameter. That is, forexample, the service duration is computed based on the number of totesbeing delivered to that stop.

According to a specific embodiment, the module which estimates the drivetime between stops varies the average drive speed used in thecalculation based on the distance between the stops. For example, theaverage speed used is higher when the distance between the stops isgreater reflecting the fact that freeways and expressways are morelikely to be used. According to an alternate embodiment, the drivingtime is determined with reference to the actual along-road distance.

According to a specific embodiment, if a van is determined not to haveenough capacity to add the totes (initially assumed to be three totes)for the new unassigned stop, it is determined whether there issufficient time between existing stops to drive back to the station to“recharge,” i.e., pick up the additional totes. If so, and all of theother parameters fall into place, the window is indicated as availablein the grid.

According to a specific embodiment, certain delivery windows in the gridinclude an indication that a van will be in the user's neighborhood,e.g., a house icon. Such an indication may be included where, forexample, the drive time between a first existing stop and the newunassigned stop (or between the new unassigned stop and a secondexisting stop) is below a threshold value. Alternatively, such an iconmight be displayed where, for example, the customer already has adelivery scheduled, or where it is desirable to provide incentives(financial or otherwise) to select particular windows.

According to another specific embodiment, certain delivery windows maybe displayed as unavailable, e.g., colored red, even though theabove-described procedure would otherwise display them as available,e.g., green. This might occur, for example, where the ratio of drivingtime to the available slack time exceeds some threshold. Using such athreshold avoids driving extremely long distances to serve a singlestop. This approach would tend to show delivery windows as availablewhere additional stops could be accommodated on the way to the new stop.

The capacity management service in the XP services subsystem runsperiodically and queries the WS database regarding reserved totecapacity. Trucks depart the DC en route to the stations in “waves.” Ifthe tote capacity for a particular truck is exceeded by the number oforders, all of the routes corresponding to the vans delivering totes onthat truck are made unavailable for further scheduling by the capacitymanagement service, i.e., their routes are closed. The capacitymanagement service also checks against the tote processing capacity ofthe DC. Customer service operators have the ability to override closedroutes for preferred customers.

Customer capacity allocation is a technique by which the system rationsdelivery windows. According to a specific embodiment, a routine runsevery night which ranks customers according to shipment frequency andaverage order size; the greater the frequency and larger the order size,the more highly ranked the customer. The routine also ranks the deliverywindows according to how long before their scheduled time the windowsfill up; the earlier filled windows being the more desirable windows.The system then allocates or reserves specific percentages of selectedranks of delivery windows to specific percentages of selected rankscustomers. During generation of the delivery window grid, the customer'sranking is taken into account when determining which delivery windows toindicate as available. For example, a highly desirable window might beshown as unavailable to an infrequent customer to ensure that frequentand high volume customers have the best selection of delivery windows.However, if the desirable windows are not filled by the more highlyranked customers at some point before the delivery date (e.g., one ortwo days in advance), they are opened up to all customers to ensure thatthey are filled.

While the invention has been particularly shown and described withreference to specific embodiments thereof, it will be understood bythose skilled in the art that changes in the form and details of thedisclosed embodiments may be made without departing from the spirit orscope of the invention. For example, the system described above withreference to FIG. 1 is only one system configuration in which thetechniques described herein may be implemented. In addition, thescheduling techniques described herein may also be used for thescheduling of things other than deliveries. For example, the schedulingof appointments could be achieved using the techniques described herein.Therefore, the scope of the invention should be determined withreference to the appended claims.

1. A computer implemented method for scheduling delivery of an order viaa wide area network, comprising: generating a delivery interface inwhich a plurality of delivery windows are presented; transmitting thedelivery interface to a remote platform via the wide area network; inresponse to selection of a first one of the plurality of deliverywindows, determining whether the order may be delivered in the firstdelivery window; and where it is determined that the order may bedelivered in the first delivery window, scheduling delivery of the orderin the first delivery window.